package com.xuecheng.content.convert;

import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.content.entity.CourseBase;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 对象属性转换器
 * 1.将MapStruct依赖添加到工程中
 * 2.创建转换类接口并在类上添加@Mapper注解
 * 3.转换方法在接口中通过MapStruct创建接口的实例对象
 * 4.转换方法
 *      传入参数 传出参数
 *      将传入参数转换为传出参数
 * @author wuyunyun
 * @data 2021/10/6 19:14
 */

@Mapper
public interface CourseBaseConvert {
    CourseBaseConvert INSTANCE = Mappers.getMapper( CourseBaseConvert.class );

    @Mappings({
            @Mapping(source = "id",target = "courseBaseId")
    })
    CourseBaseDTO entity2dto(CourseBase courseBase);

    /**
     * 集合的方法会依赖于单个数据转换的方法
     *
     *
     */
    List<CourseBaseDTO> entitys2dtos(List<CourseBase> courseBase);

    @Mappings({
            @Mapping(source = "courseBaseId",target = "id")
    })
    CourseBase dto2entity(CourseBaseDTO dto);

    List<CourseBase> dtos2entitys(List<CourseBaseDTO> dtos);

    CourseBaseDTO vo2Dto(CourseBaseVO vo);
}
